<?php

class Application_Form_Register extends Zend_Form
{

    public function init()
    {
        /* Form Elements & Other Definitions Here ... */
    }


}




class Register extends Zend_Form
{
    public function init()
    {
	    
	    
	    $loginValidateTranslator = new Zend_Translate_Adapter_Array(array(
		   							    Zend_Validate_NotEmpty::IS_EMPTY => 'Введённое значение пустое, заполните поле, пожалуйста',
									    Zend_Validate_Db_NoRecordExists::ERROR_RECORD_FOUND => 'Пользователь с логином "%value%" уже существует',
									    Zend_Validate_Regex::NOT_MATCH => 'Допускаются только латинские буквы и/или цифры',
									    Zend_Validate_StringLength::TOO_SHORT => 'Длина логина должна быть от 4 до 12 символов',
									    Zend_Validate_StringLength::TOO_LONG => 'Длина логина должна быть от 4 до 12 символов'
									  ),'ru');

	    $passwordValidateTranslator = new Zend_Translate_Adapter_Array(array(
		   							    Zend_Validate_NotEmpty::IS_EMPTY => 'Введённое значение пустое, заполните поле, пожалуйста',
									    Zend_Validate_StringLength::TOO_SHORT => 'Длина пароля должна быть от 6 до 20 символов',
									    Zend_Validate_StringLength::TOO_LONG => 'Длина пароля должна быть от 6 до 20 символов',
									    Zend_Validate_Identical::NOT_SAME => 'Пароли не совпадают',
									  ),'ru');

	    $emailValidateTranslator = new Zend_Translate_Adapter_Array(array(
		   							    Zend_Validate_NotEmpty::IS_EMPTY => 'Введённое значение пустое, заполните поле, пожалуйста',
									    Zend_Validate_Db_NoRecordExists::ERROR_RECORD_FOUND => 'Почтовый ящик "%value%" уже используется',
									    Zend_Validate_Hostname::IP_ADDRESS_NOT_ALLOWED => '"%value%" - это IP-адрес, но IP-адреса не разрешены ',
									    Zend_Validate_Hostname::UNKNOWN_TLD => '"%value%" - это DNS имя хоста, но оно не дожно быть из TLD-списка',
									    Zend_Validate_Hostname::INVALID_DASH => '"%value%" - это DNS имя хоста, но знак "-" находится в неправильном месте',
									    Zend_Validate_Hostname::INVALID_HOSTNAME_SCHEMA => '"%value%" - это DNS имя хоста, но оно не соответствует TLD для TLD "%tld%"',
									    Zend_Validate_Hostname::UNDECIPHERABLE_TLD => '"%value%" - это DNS имя хоста. Не удаётся извлечь TLD часть',
									    Zend_Validate_Hostname::INVALID_HOSTNAME => '"%value%" - не соответствует ожидаемой структуре для DNS имени хоста',
									    Zend_Validate_Hostname::INVALID_LOCAL_NAME => '"%value%" - адрес является недопустимым локальным сетевым адресом',
									    Zend_Validate_Hostname::LOCAL_NAME_NOT_ALLOWED => '"%value%" - адрес является сетевым расположением, но локальные сетевые адреса не разрешены',
									    Zend_Validate_EmailAddress::INVALID => '"%value%" неправильный адрес електронной почты. Введите его в формате имя@домен',
									    Zend_Validate_EmailAddress::INVALID_HOSTNAME => '"%hostname%" неверный домен для адреса "%value%"',
									    Zend_Validate_EmailAddress::INVALID_MX_RECORD => 'Домен "%hostname%" не имеет MX-записи об адресе "%value%"',
									    Zend_Validate_EmailAddress::DOT_ATOM => '"%localPart%" не соответствует формату dot-atom',
									    Zend_Validate_EmailAddress::QUOTED_STRING => '"%localPart%" не соответствует формату указанной строки',
									    Zend_Validate_EmailAddress::INVALID_LOCAL_PART => '"%localPart%" не правильное имя для адреса "%value%", вводите адрес вида имя@домен',
									  ),'ru');

    
	    $login = new Zend_Form_Element_Text('login');
	    $login -> setOrder('1')
		   -> setLabel('Логин:')
		   -> setRequired(true)
		   -> addValidator('NotEmpty', true)
		   -> addValidator('regex',true,'/^[a-z0-9]+$/i')
		   -> addValidator('StringLength', true, array(4, 12, 'utf8'))
		   -> addValidator('Db_NoRecordExists', true, array('users', 'login'))
		   -> setTranslator($loginValidateTranslator);

	    $password = new Zend_Form_Element_Password('password');
	    $password 	-> setOrder('2')
			-> setLabel('Пароль:')
		        -> setRequired(true)
			-> addValidator('notEmpty',true)
			-> addValidator('StringLength', true, array(6, 20, 'utf8'))
			-> setTranslator($passwordValidateTranslator);

	    $passwordconfirm = new Zend_Form_Element_Password('passwordconfirm');
	    $passwordconfirm 	-> setOrder('3')
				-> setRequired(true)
				-> setLabel('Пароль:')
				-> addValidator('NotEmpty',true)
				-> addValidator('StringLength', true, array(6, 20, 'utf8'))
				-> addValidator('Identical',true,array('token'=>'password'))
				-> setTranslator($passwordValidateTranslator);


	    $email = new Zend_Form_Element_Text('email');
	    $email -> setOrder('4')
		   -> setLabel('E-mail::')
		   -> setRequired(true)
		   -> addValidator('NotEmpty',true)
		   -> addValidator('EmailAddress', true)
		   -> addValidator('Db_NoRecordExists', true, array('users', 'email'))
		   -> setTranslator($emailValidateTranslator);

	    $msg = new Message();
		    
	    $rules = new Zend_Form_Element_Textarea('rules');
	    $rules  -> setOrder('5')
		    -> setLabel('Правила использования ресурса')
		    -> setValue($msg->getMessage('RegisterRules',false))
		    -> setAttrib('readonly','readonly')
		    -> setAttrib('cols','120')
		    -> setAttrib('rows','30');

	    
	    $rulesconfirm = new Zend_Form_Element_Checkbox('rulesconfirm');
	    $rulesconfirm   -> setOrder('6')
			    -> setRequired(true)
			    -> setLabel('Я прочитал правила и обязуюсь их соблюдать');
	    
	    $submit= new Zend_Form_Element_Submit('register');
	    $submit -> setOrder('7')
		    -> setLabel('Регистрация');
		    
	    
	    $this->setAction('')
		 ->setMethod('post')
		 ->setAttrib('id','form_register');
		 
	    $this->addElement($login);
	    $this->addElement($password);
	    $this->addElement($passwordconfirm);
	    $this->addElement($email);
	    $this->addElement($rules);
	    $this->addElement($rulesconfirm);
	    $this->addElement($submit);
    }
}